/*
 * 数据正则匹配方法汇总
 * Author CYM
 * Time 2020年7月6日
 */


/*
 * 说明：验证输入的密码相同
 * 参数：password,newpassword
*/
export function validatePasswordSame(password,newpassword, callback) {
  if (password === newpassword) {
    callback();
  } else {
    callback(new Error('密码不相同，请重新输入'));
  }
}

/*
 * 说明：身份证号
 * 参数：idcard
*/
export function validateIDCard(idcard, callback) {
  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X)$)/;
  if (reg.test(idcard)) {
    callback();
  } else {
    callback(new Error('请输入15位或18位正确的身份证号！'));
  }
}

/*
 * 说明：固定电话
 * 参数：tel
*/
export function validateTelephone(tel, callback) {
  const reg = /^0[1-9]\d{1,2}\-[1-9]\d{6,7}$/;
  if (reg.test(tel)) {
    callback();
  } else {
    callback(new Error('请输入正确的固定电话格式'));
  }
}

/*
 * 说明：年龄
 * 参数：age
*/
export function validateAge(age, callback) {
  const reg = /^([1-9]\d?|1[01]\d|120)$/;
  if (reg.test(age)) {
    callback();
  } else {
    callback(new Error('年龄范围在1-120之间！'));
  }
}

/*
 * 说明：电子邮箱
 * 参数：email
*/
export function validateEmail(email, callback) {
  const reg = /^([a-zA-Z\d])(\w|\-)+@[a-zA-Z\d]+\.[a-zA-Z]{2,4}$/;
  if (reg.test(email)) {
    callback();
  } else {
    callback(new Error('请输入正确的邮箱格式！'));
  }
}

/*
 * 说明：手机号
 * 参数：phone
*/
export function validatePhone(phone, callback) {
  const reg = /^1[3|4|5|7|8|9][0-9]{9}$/;
  if (reg.test(phone)) {
    callback();
  } else {
    callback(new Error('请输入正确的手机号码！'));
  }
}

/*
 * 说明：最大值和最小值校验
 * 参数：rule 规则, value 校验值, callback 回调
*/
export function validateMinAndMaxValue(rule, value, callback) {
  if (rule.rope._min > value) {
    callback(new Error(rule.rope._message));
  } else if (rule.rope._max < value) {
    callback(new Error(rule.rope._message));
  } else {
    callback();
  }
}

/*
 * 说明：有且只有一位小数
 * 参数：rule 规则, value 校验值, callback 回调
*/
export function validateOneDecimal(rule, value, callback) {
  var reg = /^(([^0][0-9]+|0)\.([0-9]{1,1}))$/;
  if (!reg.test(value)) {
    callback(new Error('请输入有效值！'));
  } else if (rule.rope._min > value) {
    callback(new Error(rule.rope._message));
  } else if (rule.rope._max < value) {
    callback(new Error(rule.rope._message));
  } else {
    callback();
  }
}

/*
 * 说明：匹配中文
 * 参数：value 校验值, message 提示信息, callback 回调
*/
export function isChinese(value, message, callback) {
  const passReg = /[\u4E00-\u9FA5]/g;
  if (passReg.test(value)) {
    callback(new Error(message));
  } else {
    callback();
  }
}

/*
 * 说明：匹配数字和大小写字母
 * 参数：value 校验值, message 提示信息, callback 回调
*/
export function matchNumbersEnglish(value, message, callback) {
  const nameReg = /^[a-zA-Z0-9_]{0,}$/;
  if (!nameReg.test(value)) {
    callback(new Error(message));
  } else {
    callback();
  }
}
